/**
 * 非法信息统计表
 * @author rxliuli
 */
class RIllegalInfo {
    /**
     * 构造函数
     * @param {Object} [option] 可选参数
     * @param {Number} id 主键
     * @param {Number} totalCount 总数量
     * @param {Number} undealCount 未处置数量
     * @param {Number} domainPermitCount 域名放行数量
     * @param {Number} domainShieldCount 域名屏蔽数量
     * @param {Number} sitePermitCount 网址放行数量
     * @param {Number} urlShieldCount 网址屏蔽数量
     * @param {String} belongYear 所属年，例如：2019
     * @param {...Object} [option.args] 其他参数
     */
    constructor({
                    id,
                    totalCount,
                    undealCount,
                    domainPermitCount,
                    domainShieldCount,
                    sitePermitCount,
                    urlShieldCount,
                    belongYear,
                    ...args
                } = {}) {
        this.id = id
        this.totalCount = totalCount
        this.undealCount = undealCount
        this.domainPermitCount = domainPermitCount
        this.domainShieldCount = domainShieldCount
        this.sitePermitCount = sitePermitCount
        this.urlShieldCount = urlShieldCount
        this.belongYear = belongYear
        Object.assign(this, args)
    }
}

/**
 * 非法信息统计表-月报
 * @author rxliuli
 */
class RIllegalInfoMon extends RIllegalInfo {
    /**
     * 构造函数
     * @param {Object} [option] 可选参数
     * @param {Number} month 统计月份，例如：1
     * @param {...Object} [option.args] 其他参数
     */
    constructor({
                    month,
                    ...args
                } = {}) {
        super(args)
        this.month = month
        Object.assign(this, args)
    }
}

/**
 * 非法信息统计表-周报
 * @author rxliuli
 */
class RIllegalInfoWeek extends RIllegalInfo {
    /**
     * 构造函数
     * @param {Object} [option] 可选参数
     * @param {Number} week 统计周，一年52周，从第一周开始，例如：1
     * @param {...Object} [option.args] 其他参数
     */
    constructor({
                    week,
                    ...args
                } = {}) {
        super(args)
        this.week = week
        Object.assign(this, args)
    }
}

/**
 * 非法信息统计表-日报
 * @author rxliuli
 */
class RIllegalInfoDay extends RIllegalInfo {
    /**
     * 构造函数
     * @param {Object} [option] 可选参数
     * @param {Number} week 统计周，一年52周，从第一周开始，例如：1
     * @param {String} belongMonth 所属年，例如：2019-01
     * @param {...Object} [option.args] 其他参数
     */
    constructor({
                    day,
                    belongMonth,
                    ...args
                } = {}) {
        super(args)
        this.day = day
        this.belongMonth = belongMonth
        Object.assign(this, args)
    }
}